﻿#include<stdio.h>
//1.址传递
//2.数组作为函数的参数
//3.函数的递归

//地址：在定义变量，数组，函数....，系统会分配内存区域（地址），把数据放在地址上面
//&:取地址符   &a，得到a的地址符号
//*：定义指针变量的一个标志
//int *d=地址；
//指针变量：存储地址的变量
//整形变量：存储整数的变量
//*:解引用   取内容        

//整么定义一个变量存储地址  ————》指针变量
//整么获取一个变量的地址&
//整么去通过指针变量访问指针变量上所保存的地址内部的数据

//址传递可以通过形参改变实参的值
//void fun(int a)//形参变量a
//{
//	
//
//
//}
//
//void fun1( int *p1) {//用指针变量p1作为形参
//
//	printf("%d\n",*p1);
//	*p1 = 1000;
//
//}
// 
// 
// 数组
//void fun(int arr[],int len)
//{
//	for (int i = 0; i < len; i++)
//	{
//		printf("%d\n",arr[i]);
//	}
//}


//函数的递归：在一个函数中，重复的调用自己的本生（自己调用自身）
//void fun() {
//
//	printf("11111\n");
//	fun();
//}

void fun1() {
	static int i = 10;
	if (i!=0)
	{
		i--; 
		fun1();
	}
	printf("%d\n",i);
}

void fun2(int n)
{
	if (n != 0)
	{
		fun2(n-1);
		printf("%d\n",n);
	}
	 
}

//递归逆序输出一个数
void fun3(int n)
{
	if (n != 0)
	{
		printf("%d",n%10);
		fun3(n /= 10);

	}



}

int main() 
{
	//fun();
	//fun1();
	//fun2(4);
	fun3(345);//括号里面就是给函数传递值

	//int a[10] = { 1,2,3,4,5,6 };
	//int b[5] = { 11,22,33,44,55 };
	//int c[40] = {0};

	//fun(a,10);//a为数组名  10为数组大小
	//fun(b, 5);
	//fun(c,40);

	//fun(10);//值传递，把10传递给a
	//int a = 10;
	//char b = 'a';
	//float c = 1.1f;
	//int x = 100;
	//int* d = &a;//把a的地址赋值给指针变量d
	//fun1(&x);//调用函数fun1，给函数传递地址&a
	//printf("%d\n", x);


	//数组作为函数参数
	return 0;
}